/*
 * Ejercicio Nivel1:1 objeto, 1 solo método de servicio....
 */




import javax.swing.JOptionPane;
/**
 *
 * @author LuisMi
 */
public class ManejoDatos5
{
    //Variables de clase: SI HAY
    public float[] datos;
    private float prom;

    //METODOS
    //Obligatorios
    public static void main(String[] x)
    {
        new ManejoDatos5();
    }
    public ManejoDatos5()
    {
       this.datos=null;
       this.prom=0;
       this.menu();
    }

    //De servicio
    private void menu()
    {
        //listado de opciones
        int opcion;
        do
        {
            String x=JOptionPane.showInputDialog("=====MENU======\n"+
                                        "1. CAPTURA DATOS\n"+
                                        "2. VER DATOS\n"+
                                        "3. PROMEDIO DATOS\n"+
                                        "4. PEOR DATO\n"+
                                        "5. MEJOR DATO\n"+
                                        "6. MEJORES DATOS\n"+
                                        "7. PEORES DATOS\n"+
                                        "8. DEVIACION DATOS\n"+
                                        "0. SALIR\n");
            opcion=Integer.parseInt(x);
            //selector de casos
            switch(opcion)
            {
                case 1:
                    this.configuracion();
                    this.captura();
                    this.ordenaDatos();
                break;
                case 2:
                    this.mostrarDatos();
                    
                break;
                case 3:
                    this.promedio();
                break;
                case 4:
                    this.peor();
                break;
                case 5:
                    this.mejor();
                break;
                case 6:
                    this.mejores();
                break;
                case 7:
                    this.peores();
                break;
                case 8:
                    this.desviacion();
                break;
                case 0:
                    JOptionPane.showMessageDialog(null, "CHAO PESCAO..!!");
                break;
                default:
                    JOptionPane.showMessageDialog(null, "PILAS...ESE CASO NO EXISTE..!!");
                break;
            }
        }
        while(opcion!=0);
    }
    private void configuracion()
    {
        //T1.configuracion de arreglo
        int n;
        String x=JOptionPane.showInputDialog("Cuantos datos son: ");
        n=Integer.parseInt(x);

        datos=new float[n];
    }
    private void captura()
    {
        //T2.Capturar datos
        for(int i=0;i<datos.length;i++)
        {
            datos[i]=Float.parseFloat(JOptionPane.showInputDialog("Digite datos["+i+"]"));
        }
    }
    private void mostrarDatos()
    {
        //T3.Mostrar datos
        System.out.print("Los datos son: ");
        for(int i=0;i<datos.length;i++)
        {
                          
            System.out.print(datos[i]+",");
        }
        System.out.println();
        System.out.println();
    }
    private void ordenaDatos()
    {
        //T4.Ordenar datos
        //Arrays.sort(datos);
        //Arrays.sort(datos,Collections.reverseOrder());//solo Strings
        float aux;
        for(int i=0;i<datos.length-1;i++)
        {
            for (int j=0;j<datos.length-1;j++)
            {
                if(datos[j]>datos[j+1])
                {
                    aux=datos[j];
                    datos[j]=datos[j+1];
                    datos[j+1]=aux;
                }
            }
        }
    }
    private void mejor()
    {
          //T5.Mostrar mayor
        JOptionPane.showMessageDialog(null,"El mayor es: "+datos[datos.length-1] );
        System.out.println();
    }
    private void peor()
    {
        //T6.Mostrar menor
        JOptionPane.showMessageDialog(null,"El mayor es: "+datos[0] );
        System.out.println();
    }
    private void mejores()
    {
         //T7.Mostrar mejores
        System.out.print("Los mejores son: ");
        for(int i=datos.length-3;i<datos.length;i++)
        {
            System.out.print(datos[i]+",");
        }
        System.out.println();
    }
    private void peores()
    {
         //T8.Mostrar peores
         System.out.print("Los peores son: ");
        for(int i=0;i<3;i++)
        {
            System.out.print(datos[i]+",");
        }
        System.out.println();
    }
    private void promedio()
    {
         float acu=0;
        //T9.Mostrar promedio
        for(int i=0;i<datos.length;i++)
        {
            acu+=datos[i];//acu=acu+datos[i]
        }
        prom=acu/datos.length;
        JOptionPane.showMessageDialog(null,"El promedio es: "+prom);
    }
    private void desviacion()
    {       
        //T10.Mostrar desviación Standar
        float acu=0,desv;
        for(int i=0;i<datos.length;i++)
        {
            acu+=Math.pow(datos[i]- prom,2);
        }
        desv=(float)Math.sqrt(acu/datos.length);
        JOptionPane.showMessageDialog(null,"La desviación es: "+desv );
        System.out.println();
    }
}
